#include <stdio.h>
#include <stdlib.h>
#include <string.h>


typedef struct noDados {
  void *dados;
  struct noDados *prox;
} NoDados, *pNoDados, **ppNoDados;

typedef struct {
  pNoDados inicio;
} Lista, *pLista, **ppLista;

int criaLista(ppLista pp);
int inserePrimeiro(pLista p, void *novo, int tamanho);
int insereUltimo(pLista p, void *novo, int tamanho);
int inserePoslog(pLista p, int poslog, void *novo, int tamanho);
int retiraPrimeiro(pLista p);
int retiraUltimo(pLista p);
int retiraPoslog(pLista p, int poslog);
int buscaPrimeiro(pLista p, void *pReg, int tamanho);
int buscaUltimo(pLista p, void *pReg, int tamanho);
int buscaPoslog(pLista p, int poslog, void *pReg, int tamanho);
void purgaLista(pLista p);
void destroiLista(ppLista pp);
int testaVazia(pLista p);
int tamanhoLista(pLista p);
